package com.lagou.Client;

import com.lagou.model.Student;
import com.lagou.model.StudentMessage;
import com.lagou.model.user;
import com.lagou.model.userMessage;

import java.io.IOException;
import java.util.List;

public class ClientView {
    /**
     * 为了可以使用输入输出流，采用合成复用原则实现
     */
    private ClientInitClose cic;

    /**
     * 通过构造方法实现成员变量的初始化
     * @param cic
     */
    public ClientView(ClientInitClose cic) {
        this.cic = cic;
    }


    /**
     * 自定义成员方法实现客户端主界面的绘制
     */
    public void clientMainPage() throws IOException, ClassNotFoundException {
        while(true) {
            System.out.println("  \n\n\t\t   在线考试系统");
            System.out.println("-------------------------------------------");
            System.out.print("   [1] 学员系统");
            System.out.println("     [2] 管理员系统");
            System.out.println("   [0] 退出系统");
            System.out.println("-------------------------------------------");
            System.out.println("请选择要进行的业务编号：");
            //Scanner sc = new Scanner(System.in);
            //int choose = sc.nextInt();
            int choose = ClientScanner.getScanner().nextInt();
            switch (choose) {
                case 1:
                    System.out.println("正在进入学员系统...");
                    break;
                case 2:
                    clientManagerLogin();
                    break;
                case 0:
                    System.out.println("正在退出系统...");
                    return;
                default:
                    System.out.println("输入错误，请重新选择！");
            }
        }
    }

    /**
     * 自定义成员方法实现客户端管理员登录的功能
     */
    private void clientManagerLogin() throws IOException, ClassNotFoundException {
        // 1.准备管理员登录的相关数据
        System.out.println("请输入管理员的账户信息：");
        String userName = ClientScanner.getScanner().next();
        System.out.println("请输入管理员的密码信息：");
        String password = ClientScanner.getScanner().next();
        userMessage tum = new userMessage("managerCheck", new user(userName, password));
        // 2.将UserMessage类型的对象通过对象输出流发送给服务器
        cic.getOos().writeObject(tum);
        System.out.println("客户端发送管理员账户信息成功！");
        // 3.接收服务器的处理结果并给出提示
        tum = (userMessage) cic.getOis().readObject();
        if ("success".equals(tum.getType())) {
            while (true) {
                System.out.println("登录成功，欢迎使用！  1:学员管理模块   2:考题管理模块   0:退出");
                String MSel = ClientScanner.getScanner().next();
                if (MSel.equals("1")) {
                    tum = new userMessage("studnetManager",null);





                    // 2.将UserMessage类型的对象通过对象输出流发送给服务器
                    cic.getOos().writeObject(tum);
                    while (true) {
                        System.out.println("欢迎来到学员管理模块，1：增加学员   2：删除学员   3：删除学员   4：查找学员  5：浏览学员   0:退出");
                        String stuSel = ClientScanner.getScanner().next();
                        if (stuSel.equals("1")) {
                            System.out.println("增加学员开始....");
                            //addStudent();
                            // 1.准备管理员登录的相关数据
                            System.out.println("请输入学员的账户信息：");
                            String stuName = ClientScanner.getScanner().next();
                            System.out.println("请输入学员的密码信息：");
                            String stuPassword = ClientScanner.getScanner().next();




                            StudentMessage stum = new StudentMessage("addStudent", new Student(stuName, stuPassword));
                            // 2.将StudentMessage类型的对象通过对象输出流发送给服务器
                            cic.getOos().writeObject(stum);
                            System.out.println("客户端发送管理员账户信息成功！");
                            // 3.接收服务器的处理结果并给出提示
                            stum = (StudentMessage) cic.getOis().readObject();
                            if (stum.getType().equals("success") ){
                                System.out.println("添加学员成功！");
                            }else{
                                System.out.println("添加学员失败，用户已存在！");
                            }

                        }else if (stuSel.equals("2")) {
                            System.out.println("删除学员开始....");
                        }else if (stuSel.equals("3")) {
                            System.out.println("修改学员开始....");
                        }else if (stuSel.equals("4")) {
                            System.out.println("查找学员开始....");
                        }else if (stuSel.equals("5")) {
                            System.out.println("查看所有学员....");
                            StudentMessage stum = new StudentMessage("getAllStudent",null);
                            // 2.将UserMessage类型的对象通过对象输出流发送给服务器
                            cic.getOos().writeObject(stum);
                            List<Student> studentList =  (List<Student>)cic.getOis().readObject();
                            for (int i = 0; i < studentList.size(); i++) {
                                System.out.println(studentList.get(i));
                            }
                        }else if (stuSel.equals("0")) {
                            StudentMessage stum = new StudentMessage("stuexit",null);
                            // 2.将UserMessage类型的对象通过对象输出流发送给服务器
                            cic.getOos().writeObject(stum);
                            break;
                        }else  {
                            System.out.println("输入有误！！！！！");
                        }
                    }


                }else if(MSel.equals("2")) {
                    tum = new userMessage("testPaperManager",null);
                    // 2.将UserMessage类型的对象通过对象输出流发送给服务器
                    cic.getOos().writeObject(tum);
                }else if(MSel.equals("0")) {
                    tum = new userMessage("exit",null);
                    // 2.将UserMessage类型的对象通过对象输出流发送给服务器
                    cic.getOos().writeObject(tum);
                    break;
                }else {
                    System.out.println("输入有误！！！！！");
                }
            }


        } else {
            System.out.println("用户名或密码错误！");
        }
    }

    private void addStudent() {
    }
}
